package com.syh.jn.scm.domain.downstream.repository.system;

import cn.redscarf.commons.wrapper.Wrapper;
import com.syh.core.ddd.infrastructure.repository.AggregateRepository;
import com.syh.jn.scm.domain.downstream.entity.system.DownRole;
import com.syh.jn.scm.dto.downstream.system.DownMenuVo;
import com.syh.jn.scm.dto.downstream.system.downRole.DownRoleVo;
import com.syh.jn.scm.dto.operation.system.permission.PermissionVo;

import java.util.List;

public interface DownRoleRepository extends DownRoleReadRepository, AggregateRepository<DownRole, Long> {

  /**
   * @param entity
   * @param updateMenus
   */
  public void update(DownRole entity, Boolean updateMenus);

  /**
   * 获取角色所有的权限
   *
   * @return
   */
  public List<DownMenuVo> getMenus(Wrapper wrapper);

  /**
   * 获取角色所有的权限
   *
   * @return
   */
  public List<DownRoleVo> getAllRolesWithPermission();

  /**
   * 根据权限查找角色
   *
   * @param perId
   * @return
   */
  public List<DownRole> getRolesByPermissionId(Long perId);

  /**
   * 根据角色id查找对应权限
   *
   * @param roleId
   * @return
   */
  public List<PermissionVo> getPermissionByRoleId(Long roleId);
}
